import request from '@/config/axios'

// ERP 产品 VO
export interface ProductVO {
  id: number // 产品编号
  name: string // 产品名称
  barCode: string // 产品条码
  categoryId?: number // 产品类型编号
  parentCategoryId?: number // 父产品类型编号
  unitId: number // 单位编号
  unitName?: string // 单位名字
  status: number // 产品状态
  standard: string // 产品规格
  remark: string // 产品备注
  checkStandard: string // 检测标准
  expiryDay: number // 保质期天数
  weight: number // 重量（kg）
  purchasePrice: number // 采购价格，单位：元
  salePrice: number // 销售价格，单位：元
  minPrice: number // 最低价格，单位：元
  imgUrl: string // 产品图片 URL 列表
  productPrice: number // 产品价格，单位：元
  productType: number // 产品类型
}

const cache = new Map()

// ERP 产品 API
export const ProductApi = {
  // 查询产品分页
  getProductPage: async (params: any) => {
    return await request.get({ url: `/erp/product/page`, params })
  },

  // 查询产品精简列表
  getProductSimpleList: async () => {
    if (cache.has('erp_product_simple_list')) {
      return cache.get('erp_product_simple_list')
    }
    const res = await request.get({ url: `/erp/product/simple-list` })
    const dataMap = {} as any
    ;(res || []).forEach((item) => {
      if (dataMap[item.name]) {
        dataMap[item.name] += 1
      } else {
        dataMap[item.name] = 1
      }
    })
    ;(res || []).forEach((item) => {
      if (dataMap[item.name] > 1) {
        item.name = `${item.name}（${item.standard}）`
      }
    })
    cache.set('erp_product_simple_list', res)
    return res
  },

  // 查询机供品产品精简列表
  getJgpProductSimpleList: async () => {
    if (cache.has('erp_jgp_product_simple_list')) {
      return cache.get('erp_jgp_product_simple_list')
    }
    const res = await request.get({ url: `/erp/product/jgp-simple-list` })
    const dataMap = {} as any
    ;(res || []).forEach((item) => {
      if (dataMap[item.name]) {
        dataMap[item.name] += 1
      } else {
        dataMap[item.name] = 1
      }
    })
    ;(res || []).forEach((item) => {
      if (dataMap[item.name] > 1) {
        item.name = `${item.name}（${item.standard}）`
      }
    })
    cache.set('erp_jgp_product_simple_list', res)
    return res
  },

  // 查询产品详情
  getProduct: async (id: number) => {
    return await request.get({ url: `/erp/product/get?id=` + id })
  },

  // 新增产品
  createProduct: async (data: ProductVO) => {
    cache.clear()
    return await request.post({ url: `/erp/product/create`, data })
  },

  // 修改产品
  updateProduct: async (data: ProductVO) => {
    cache.clear()
    return await request.put({ url: `/erp/product/update`, data })
  },
  // 批量设置直入直出
  updateDirectType: async (data: any) => {
    cache.clear()
    return await request.put({ url: `/erp/product/update-direct-type`, data })
  },

  // 删除产品
  deleteProduct: async (id: number) => {
    cache.clear()
    return await request.delete({ url: `/erp/product/delete?id=` + id })
  },

  // 导出产品 Excel
  exportProduct: async (params) => {
    return await request.download({ url: `/erp/product/export-excel`, params })
  }
}
